﻿using System.Diagnostics;
using NLog;

namespace KinonekoSoftware.Foundation.UI
{
    partial class Xplat
    {
        private static ILogger        _logger;
        private static Action<string> _handler;

        public static void SetLogBroadcaster(Action<string> handler)
        {
            _handler = handler;
        }
        
        public static void Debug(string msg)
        {
            //
            //
            Logger?.Debug(msg);
            
            //
            //
            _handler?.Invoke($"【DEBUG】{msg}");
        }
        
        
        public static void Warning(string msg)
        {
            Logger?.Warn(msg);
            _handler?.Invoke($"【Warn】{msg}");
        }
        
        public static void Error(string msg)
        {
            Logger?.Error(msg);
            _handler?.Invoke($"【Error】{msg}");
        }
        
        public static void Info(string msg)
        {
            Logger?.Fatal(msg);
            _handler?.Invoke($"【Info】{msg}");
        }
        
        public static void Fatal(string msg)
        {
            Logger?.Fatal(msg);
            _handler?.Invoke($"【Fatal】{msg}");
        }

        public static ILogger Logger
        {
            get
            {
                if (_logger is null && Ioc.IsRegistered(typeof(ILogger)))
                {
                    _logger = Ioc.Get<ILogger>();
                }
                
                return _logger;
            }
        }

    }
}